package com.ruoyi.common.excel;

import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.converters.ReadConverterContext;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.ruoyi.common.utils.StringUtils;

import java.math.BigDecimal;

/**
 * EasyExcel 3.3.2 全局 Long 转换器：空/文本/小数 → null
 */
public class GlobalLongConverter implements Converter<Long> {

    @Override
    public Class<?> supportJavaTypeKey() { return Long.class; }

    @Override
    public CellDataTypeEnum supportExcelTypeKey() { return null; }

    public Long convertToJavaData(ReadConverterContext<?> context) {
        ReadCellData<?> cellData = context.getReadCellData();
        // 空单元格
        if (cellData.getType() == CellDataTypeEnum.EMPTY) return null;
        // 数字型
        if (cellData.getType() == CellDataTypeEnum.NUMBER) {
            return cellData.getNumberValue().longValue();
        }
        // 文本型
        String str = cellData.getStringValue();
        if (StringUtils.isBlank(str)) return null;
        try {
            return new BigDecimal(str.trim()).longValue();
        } catch (NumberFormatException e) {
            return null;
        }
    }
}
